{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# MNIST Digit Pixel by Pixel"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Load an MNIST digit and plot it in pixel-level detail. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/the-deep-learners/deep-learning-illustrated/blob/master/notebooks/mnist_digit_pixel_by_pixel.ipynb)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Load dependencies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "import numpy as np\n",
    "from keras.datasets import mnist"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Load data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "(X_train, y_train), (X_test, y_valid) = mnist.load_data()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Sample an image"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# sample = np.random.randint(0, X_train.shape[0])\n",
    "sample = 39235"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Plot digit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f5927ee2ba8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (10,10))\n",
    "mnist_img = X_train[sample]\n",
    "plt.imshow(mnist_img,cmap=\"Greys\")\n",
    "ax = plt.gca()\n",
    "\n",
    "# First turn off the  major labels, but not the major ticks\n",
    "plt.tick_params(\n",
    "    axis='both',        # changes apply to the both x and y axes\n",
    "    which='major',      # Change the major ticks only\n",
    "    bottom=True,        # ticks along the bottom edge are on\n",
    "    left=True,          # ticks along the top edge are on\n",
    "    labelbottom=False,  # labels along the bottom edge are off\n",
    "    labelleft=False)    # labels along the left edge are off\n",
    "\n",
    "# Next turn off the minor ticks, but not the minor labels\n",
    "plt.tick_params(\n",
    "    axis='both',        # changes apply to both x and y axes\n",
    "    which='minor',      # Change the minor ticks only\n",
    "    bottom=False,       # ticks along the bottom edge are off\n",
    "    left=False,         # ticks along the left edge are off\n",
    "    labelbottom=True,   # labels along the bottom edge are on\n",
    "    labelleft=True)     # labels along the left edge are on\n",
    "\n",
    "# Set the major ticks, starting at 1 (the -0.5 tick gets hidden off the canvas)\n",
    "ax.set_xticks(np.arange(-.5, 28, 1))\n",
    "ax.set_yticks(np.arange(-.5, 28, 1))\n",
    "\n",
    "# Set the minor ticks and labels\n",
    "ax.set_xticks(np.arange(0, 28, 1), minor=True);\n",
    "ax.set_xticklabels([str(i) for i in np.arange(0, 28, 1)], minor=True);\n",
    "ax.set_yticks(np.arange(0, 28, 1), minor=True);\n",
    "ax.set_yticklabels([str(i) for i in np.arange(0, 28, 1)], minor=True);\n",
    "\n",
    "ax.grid(color='black', linestyle='-', linewidth=1.5)\n",
    "_ = plt.colorbar(fraction=0.046, pad=0.04, ticks=[0,32,64,96,128,160,192,224,255])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Confirm image label"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train[sample]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
